package org.Modulo1;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.FragmentTransaction;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.res.AssetManager;
import android.os.Bundle;
import android.os.Environment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.util.Log;
public class Principal extends FragmentActivity implements ActionBar.TabListener{

	/*Creamos el viewpager y el acceso a distintos layouts (Fragments)*/
	private ViewPager miViewPager;
	private PagerAdapter page;
	private ActionBar miActionBar;
	
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       /* setContentView(1);
        
        //Preparamos la barra de acciones en modo de "tabs"
        miActionBar = getActionBar();
        miActionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
        
        //Inicializamos el PageAdapter
        page = new PagerAdapter(getSupportFragmentManager());
        
        //Inicializamos el ViewPager
        miViewPager = (ViewPager) findViewById(1);
        miViewPager.setAdapter(page);
        miViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener(){
        	@Override
        	public void onPageSelected(int position) {
               miActionBar.setSelectedNavigationItem(position);
            }
        });
        
        //Generamos las etiquetas que tendrán la ActionBar
        miActionBar.addTab(
        		miActionBar.newTab()
        		.setText(2)
        		.setTabListener(this));
        miActionBar.addTab(
        		miActionBar.newTab()
        		.setText(3)
        		.setTabListener(this));
        miActionBar.addTab(
        		miActionBar.newTab()
        		.setText(4)
        		.setTabListener(this));
        miActionBar.addTab(
        		miActionBar.newTab()
        		.setText(5)
        		.setTabListener(this));
        
        //Para que cada vez que se inicie la aplicación, comience por Grafico
        miActionBar.setSelectedNavigationItem(1);
        
        Creamos un directorio que almacenará la información.
        //Será necesaria una tarjeta SD.
        File ruta_sd = Environment.getExternalStorageDirectory();
        if(!ruta_sd.exists())
        	crearDialogo().show();
        else{
        	String ruta = ruta_sd.toString() + "/Ancient/";
        	File directorio = new File(ruta);
        	if(!directorio.exists())
        		if(!directorio.mkdirs()){
        			Log.v("Ancient.java", "ERROR: Creacion de directorio " + 
        					ruta + " en sdcard ha fallado");        			
        		}
        		else
        			Log.v("Ancient.java", "Creacion de directorio " + 
        					ruta + " en sdcard correcta");
        	
        	Copiamos el trainer de assets en Ancient/tessdata
        	String tessdata = ruta + "tessdata/";
        	File dirtess = new File(tessdata);
        	
        	if(!dirtess.exists())
        		if(!dirtess.mkdirs()){
        			Log.v("Ancient.java", "ERROR: Creacion de directorio " + 
        					ruta + " en sdcard ha fallado");    
        		}
        		else
        			Log.v("Ancient.java", "Creacion de directorio " + 
        					ruta + " en sdcard correcta");
        	
        	try {
        		//Realizamos la copia
        		String [] archivos = new String[]
        				{"spa.cube.bigrams",
        				"spa.cube.fold",
        				"spa.cube.lm",
        				"spa.cube.nn",
        				"spa.cube.params",
        				"spa.cube.size",
        				"spa.cube.word-freq",
        				"spa.traineddata"};
        		
        		AssetManager mgr = getAssets();
        		
        		for(int i = 0; i < archivos.length; i++){
        			if (!(new File(tessdata+archivos[i])).exists()){
		            	InputStream in = mgr.open(archivos[i]);
		            	
						OutputStream copia = new FileOutputStream(tessdata+archivos[i]);
						
						byte[] buf = new byte[1024];
						int len;
						while ((len = in.read(buf)) > 0) 
							copia.write(buf, 0, len);
						
						if(copia != null){
							copia.flush();
							copia.close();
						}
					
						if(in != null) in.close();
        			}
        		}
				
			} catch (IOException e) {
				// TODO Bloque catch generado automáticamente
			}
        }*/
        
    }
    
    /*private Dialog crearDialogo(){
    	AlertDialog.Builder mensaje = new AlertDialog.Builder(this);
    	mensaje.setTitle("Importante");
    	mensaje.setMessage("Se necesita una tarjeta SD");
    	mensaje.setPositiveButton("Salir", new OnClickListener() {
			
			public void onClick(DialogInterface dialog, int which) {
				// TODO Apéndice de método generado automáticamente
				dialog.cancel();
				try {
					finish();
				} catch (Throwable e) {
					// TODO Bloque catch generado automáticamente
					Log.e("Peligro", "Throwable");
				}
			}
		});
    	return mensaje.create();
    }*/
    
    /*Al pulsar BACK, destruye la Activity (borra de RAM)*/
    /*@Override
    public void onDestroy(){
    	super.onDestroy();
    }*/
    
    /*Al pulsar el boton HOME, finaliza la Activity*/
    /*@Override
    public void onPause(){
    	finish();
    	super.onPause();
    }*/

    
    /*@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_ancient, menu);
        return true;
    }*/

	
	public void onTabReselected(Tab arg0, FragmentTransaction arg1) {
		// TODO Apéndice de método generado automáticamente
		
	}


	public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
		// TODO Apéndice de método generado automáticamente
		miViewPager.setCurrentItem(tab.getPosition());		
	}

	
	public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {
		// TODO Apéndice de método generado automáticamente
		
	}	
	public void enviarNotificacion() {
        throw new UnsupportedOperationException();
	}
}
